]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
search: Activate SearchResult from the result itself
authorMarco Trevisan (Treviño) <mail@3v1n0.net>
Wed, 16 Oct 2019 00:23:22 +0000 (02:23 +0200)
committerMarco Trevisan (Treviño) <mail@3v1n0.net>
Wed, 16 Oct 2019 10:27:49 +0000 (12:27 +0200)
Search result views can include also objects that are not inheriting from
SearchResults (such as the AppIcon) that has not any 'activate' signal, to
connect to. Since we want to enforce a more formal interface, we want to
have just a simpler requirement as an activate() method.

So, instead using the 'activate' signal in SearchResult to activate a result
via SearchResultsBase just implement activate() in the result.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/765

js/ui/search.js

index 6485b57e86c5afc2b9dc6ce548e0cd73046068ad..22df02d7a85714cf3391b658372ec01ac1c893c9 100644 (file)
@@ -50,7 +50,12 @@ var SearchResult = class {
     }
 
     activate() {
-        this.emit('activate', this.metaInfo.id);
+        this.provider.activateResult(this.metaInfo.id, this._resultsView.terms);
+
+        if (this.metaInfo.clipboardText)
+            St.Clipboard.get_default().set_text(
+                St.ClipboardType.CLIPBOARD, this.metaInfo.clipboardText);
+        Main.overview.toggle();
     }
 };
 Signals.addSignalMethods(SearchResult.prototype);
@@ -156,8 +161,6 @@ var SearchResultsBase = class {
 
         this._resultDisplays = {};
 
-        this._clipboard = St.Clipboard.get_default();
-
         this._cancellable = new Gio.Cancellable();
 
         this.actor.connect('destroy', this._onDestroy.bind(this));
@@ -191,13 +194,6 @@ var SearchResultsBase = class {
         this.emit('key-focus-in', actor);
     }
 
-    _activateResult(result, id) {
-        this.provider.activateResult(id, this._terms);
-        if (result.metaInfo.clipboardText)
-            this._clipboard.set_text(St.ClipboardType.CLIPBOARD, result.metaInfo.clipboardText);
-        Main.overview.toggle();
-    }
-
     _setMoreCount(_count) {
     }
 
@@ -234,7 +230,6 @@ var SearchResultsBase = class {
                 metasNeeded.forEach((resultId, i) => {
                     let meta = metas[i];
                     let display = this._createResultDisplay(meta);
-                    display.connect('activate', this._activateResult.bind(this));
                     display.actor.connect('key-focus-in', this._keyFocusIn.bind(this));
                     this._resultDisplays[resultId] = display;
                 });
@@ -468,6 +463,10 @@ var SearchResultsView = class {
         this._reloadRemoteProviders();
     }
 
+    get terms() {
+        return this._terms;
+    }
+
     _reloadRemoteProviders() {
         let remoteProviders = this._providers.filter(p => p.isRemoteProvider);
         remoteProviders.forEach(provider => {